package de.herzog.bbp.model.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import de.herzog.bbp.model.Verein;

public class VereinDAO extends AbstractDAO {

	public static List<Verein> loadAll() {
		@SuppressWarnings("unchecked")
		List<Verein> list = getSession().createCriteria(Verein.class).list();
		return list;
	}

	public static Verein loadById(Integer id) {
		return (Verein) getSession().load(Verein.class, id);
	}

	public static List<Verein> loadByName(String name) {
		Criteria criteria = getSession().createCriteria(Verein.class);
		criteria.add(Restrictions.eq("name", name));
		@SuppressWarnings("unchecked")
		List<Verein> list = criteria.list();
		return list;
	}

	public static Verein getByName(String name) {
		List<Verein> list = loadByName(name);
		if (list.size() > 1)
			throw new IllegalStateException("Duplicate");
		if (list.size() == 1) {
			return list.get(0);
		} else {
			Verein verein = new Verein(name, name, null);
			persist(verein);
			return verein;
		}
	}

	public static void insert(String name, String langName, String nummer) {
		List<Verein> list = loadByName(name);
		if (list.size() == 0) {
			Verein verein = new Verein(name, langName, nummer);
			persist(verein);
		}
	}
}
